package com.zqh.template.utils;


import cn.hutool.core.util.StrUtil;
import com.zqh.meta.Meta;
import lombok.var;

import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;

/**
 * @description: 模板制作工具类
 * @author: zqh
 * @dateTime: 2025/4/29 16:41
 */
public class TemplateMakerUtils {


    /**
     * @description: 从未分组的组内移除同名的文件
     * @params: [filesInfoList]
     * @author: zqh
     * @dateTime: 2025/4/29 16:43
     */
    public  static List<Meta.FileConfig.FilesInfo> removeGroupFilesFromRoot(List<Meta.FileConfig.FilesInfo> filesInfoList)
    {

        // 1、有分组的，以分组为单位处理
        var groupFilesInfoList = filesInfoList
                .stream()
                .filter(filesInfo -> StrUtil.isNotBlank(filesInfo.getGroupKey()))
                .collect(Collectors.toList());


        // 2、获取所有分组内的文件
        var groupFiles = groupFilesInfoList
                .stream()
                .flatMap(filesInfo -> filesInfo.getFiles().stream())
                .collect(Collectors.toList());

        // 3、获取所有分组的内文件的路径集合
        Set<String> groupFilesPathSet = groupFiles.stream()
                .map(filesInfo -> filesInfo.getInputPath())
                .collect(Collectors.toSet());

        // 4、 移除所有名称在set 中的外层文件
        filesInfoList = filesInfoList
                .stream()
                .filter(filesInfo -> !groupFilesPathSet.contains(filesInfo.getInputPath()))
                .collect(Collectors.toList());


        return filesInfoList;
    }


}
